ostree.git
10 years agoUse g_autoptr(GPtrArray) instead of gs_unref_ptrarray
Matthew Barnes [Tue, 5 May 2015 15:44:40 +0000 (11:44 -0400)]
Use g_autoptr(GPtrArray) instead of gs_unref_ptrarray

10 years agoUse g_autoptr(GHashTable) instead of gs_unref_hashtable
Matthew Barnes [Tue, 5 May 2015 15:43:31 +0000 (11:43 -0400)]
Use g_autoptr(GHashTable) instead of gs_unref_hashtable

10 years agoUse g_autoptr(GBytes) instead of gs_unref_bytes
Matthew Barnes [Tue, 5 May 2015 15:41:50 +0000 (11:41 -0400)]
Use g_autoptr(GBytes) instead of gs_unref_bytes

10 years agoUse g_autoptr(GChecksum) instead of gs_free_checksum
Matthew Barnes [Tue, 5 May 2015 15:38:16 +0000 (11:38 -0400)]
Use g_autoptr(GChecksum) instead of gs_free_checksum

10 years agoUse glnx_unref_object instead of gs_unref_object
Matthew Barnes [Tue, 5 May 2015 14:33:53 +0000 (10:33 -0400)]
Use glnx_unref_object instead of gs_unref_object

For non-GIO object types, at least until autocleanup support for GObject
based types becomes more widespread.

10 years agoUse g_autoptr() for GIO object types
Matthew Barnes [Mon, 4 May 2015 22:22:39 +0000 (18:22 -0400)]
Use g_autoptr() for GIO object types

GLib 2.44 supplies all the necessary autocleanup macros for GIO types,
and libglnx backports the relevant macros for ostree.

10 years agoUse g_autofree instead of gs_free
Matthew Barnes [Mon, 4 May 2015 21:58:26 +0000 (17:58 -0400)]
Use g_autofree instead of gs_free

10 years agoJuggling libglnx.h includes
Matthew Barnes [Mon, 4 May 2015 22:08:49 +0000 (18:08 -0400)]
Juggling libglnx.h includes

10 years agogpg: Add ostree_gpg_verify_result_describe_variant()
Matthew Barnes [Tue, 5 May 2015 21:41:13 +0000 (17:41 -0400)]
gpg: Add ostree_gpg_verify_result_describe_variant()

Needed for printing signature details in places where
OstreeGpgVerifyResult cannot go.

10 years agorepo: Stop creating "transaction" symlink
Colin Walters [Mon, 4 May 2015 16:46:32 +0000 (12:46 -0400)]
repo: Stop creating "transaction" symlink

This originally was a way that we detected the case where a pull was
interrupted.  Later, we added `.commitpartial` files which also cover
this case.

See also https://github.com/GNOME/ostree/pull/85

We still want to honor their existence (and unlink them) in case an
old version of ostree was in use, but I believe it's safe to stop
creating them now.

The only case where this would break is if you have a version of
ostree that predates commitpartial in your rollback history, but such
old versions are no longer in use by operating systems I support at
least.

Closes: https://github.com/GNOME/ostree/pull/100
10 years agolibglnx: Pick up bugfix and backports
Matthew Barnes [Wed, 6 May 2015 14:28:31 +0000 (10:28 -0400)]
libglnx: Pick up bugfix and backports

Need more autocleanup backports for GIO types.

10 years agoTeach fsck about partial commits
Colin Walters [Mon, 6 Apr 2015 18:19:08 +0000 (14:19 -0400)]
Teach fsck about partial commits

An OSTree user noticed that `ostree fsck` would produce `missing
object` errors in the case of interrupted pulls.

It's possible to do e.g. `ostree pull --subpath=/usr/share/rpm ...`,
which gets you just that portion of the commit.  The use case for this
was being able to see what changes would appear in an update before
actually downloading all of it.

(I think this would be better covered by static deltas, but those
 aren't final yet, and `--subpath` predates it)

Further, `.commitpartial` is used as a successor to the `transaction`
symlink for more precise knowledge in the case where a pull was
interrupted that we needed to resume scanning.

So it makes sense for `ostree fsck` to be aware of it.

10 years agocore: Cleanup commitpartial file with fd-relative lookups
Colin Walters [Sun, 5 Apr 2015 18:07:03 +0000 (14:07 -0400)]
core: Cleanup commitpartial file with fd-relative lookups

First, this is just a general continuation of the `GFile -> openat`
transition.

Second, it's preparatory work for fsck to gain awareness of partial
commits.

10 years agodoc: remove unknown parameter from inline documentation
Giuseppe Scrivano [Tue, 5 May 2015 14:28:11 +0000 (16:28 +0200)]
doc: remove unknown parameter from inline documentation

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
10 years agorepo: Fix an obvious typo
Matthew Barnes [Tue, 5 May 2015 14:24:38 +0000 (10:24 -0400)]
repo: Fix an obvious typo

10 years agolibglnx: fix reference to commit
Giuseppe Scrivano [Tue, 5 May 2015 14:20:18 +0000 (16:20 +0200)]
libglnx: fix reference to commit

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
10 years agosysroot: Add an API to lock
Colin Walters [Mon, 4 May 2015 22:35:52 +0000 (18:35 -0400)]
sysroot: Add an API to lock

If a system administrator happens to type `ostree admin upgrade`
multiple times, currently that will lead to a potentially corrupted
system.

I originally attempted to do locking *internally* in `libostree`, but
that didn't work out because currently a number of the commands
perform multi-step operations that all need to be serialized.  All of
the current code in `ostree admin deploy` is an example.

Therefore, allow callers to perform locking, as most of the higher
level logic is presently implemented there.

At some point, we can revisit having internal locking, but it will be
difficult.  A more likely approach would be similar to Java's approach
with concurrency on iterators - a "fail fast" method.

10 years agoFix build when using GLib < 2.44
Matthew Barnes [Mon, 4 May 2015 16:00:54 +0000 (12:00 -0400)]
Fix build when using GLib < 2.44

10 years agopull: the commit size in the summary is not for the detached metadata
Giuseppe Scrivano [Tue, 28 Apr 2015 09:56:53 +0000 (11:56 +0200)]
pull: the commit size in the summary is not for the detached metadata

Use the size specified in the summary file only for the not detached
metadata.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
10 years agogpg: Fix _ostree_gpg_verifier_add_keyring()
Matthew Barnes [Fri, 1 May 2015 19:19:20 +0000 (15:19 -0400)]
gpg: Fix _ostree_gpg_verifier_add_keyring()

The function never fails, but its API makes it look like it can.

Fortunately it's private, so just fix it.

10 years agoostree: Split up "remote" subcommands
Matthew Barnes [Wed, 29 Apr 2015 15:09:40 +0000 (11:09 -0400)]
ostree: Split up "remote" subcommands

To make room for "remote gpg-import", which will be non-trivial.
ot-builtin-remote.c was already a little too crowded anyway.

Also while we're at it, port this bit of code away from libgsystem.

10 years agorepo: Initialize GPGME in instance init()
Matthew Barnes [Thu, 30 Apr 2015 15:06:24 +0000 (11:06 -0400)]
repo: Initialize GPGME in instance init()

Initially I had this in class_init() but there it would get invoked
during introspection scanning.

10 years agolibotutil: Add ot_gpgme_ctx_tmp_home_dir()
Matthew Barnes [Mon, 27 Apr 2015 01:25:35 +0000 (21:25 -0400)]
libotutil: Add ot_gpgme_ctx_tmp_home_dir()

Currently used for signature verification, will also be used for
importing GPG keys.

10 years agolibotutil: Establish a place for GPG utilities
Matthew Barnes [Sun, 26 Apr 2015 22:08:20 +0000 (18:08 -0400)]
libotutil: Establish a place for GPG utilities

Add ot-gpg-utils.[ch] and move _ostree_gpg_error_to_gio_error() here.

10 years agoshow: add option --gpg-homedir
Giuseppe Scrivano [Mon, 27 Apr 2015 09:15:40 +0000 (11:15 +0200)]
show: add option --gpg-homedir

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
10 years agogpg: do not use secring.gpg
Giuseppe Scrivano [Mon, 27 Apr 2015 08:59:34 +0000 (10:59 +0200)]
gpg: do not use secring.gpg

It contains the secret keyring

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
10 years agog_output_stream_splice: check correctly the error code
Giuseppe Scrivano [Fri, 24 Apr 2015 10:37:49 +0000 (12:37 +0200)]
g_output_stream_splice: check correctly the error code

While at it, change the style of other two occurrences.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
10 years agotest-auto-summary.sh properly quote arguments to assert_streq
Giuseppe Scrivano [Fri, 24 Apr 2015 13:42:28 +0000 (15:42 +0200)]
test-auto-summary.sh properly quote arguments to assert_streq

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
10 years agopull: Always request detached metadata for commits
Matthew Barnes [Tue, 21 Apr 2015 20:20:28 +0000 (16:20 -0400)]
pull: Always request detached metadata for commits

Always request detached metadata for commit objects, even if we already
have the commit object.  This ensures we fetch any post facto detached
metadata updates such as new GPG signatures.

https://bugzilla.gnome.org/748220

10 years agoreset: update help output
Micah Abbott [Thu, 23 Apr 2015 18:11:33 +0000 (14:11 -0400)]
reset: update help output

The inline help for 'ostree reset' now correctly shows that it
requires a REF and a COMMIT as arguments.

10 years agoREADME.md: fix typo
Giuseppe Scrivano [Tue, 21 Apr 2015 21:04:28 +0000 (23:04 +0200)]
README.md: fix typo

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
10 years agodeploy: Drop a fsync, use fd-relative APIs
Colin Walters [Mon, 20 Apr 2015 15:41:54 +0000 (11:41 -0400)]
deploy: Drop a fsync, use fd-relative APIs

Now that we can rely on `syncfs()`, drop another fsync in the deploy
path.  While we're here, convert it to fd-relative.

10 years agodeploy: Drop fsync of modified config files
Colin Walters [Sun, 19 Apr 2015 16:34:01 +0000 (12:34 -0400)]
deploy: Drop fsync of modified config files

These fsyncs were added for what turned out to be a fairly bogus
reason; I was hitting read errors from extlinux after upgrades and out
of conservatisim tried adding fsync calls, but the *actual* problem
was that extlinux didn't support 64 bit ext4.  Now that at least for
Project Atomic hosts we're just targeting grub2, we can drop these
fsync calls and rely on `syncfs()` being both faster and catching any
errors.

10 years agodeploy: Use syncfs() in addition to sync()
Colin Walters [Tue, 14 Apr 2015 17:47:08 +0000 (13:47 -0400)]
deploy: Use syncfs() in addition to sync()

For some sort of crazy reason, the `sync()` system call doesn't
actually return an error code, even though from what I can tell in the
kernel it wouldn't be terribly hard to add.

Regardless though, it is better for userspace apps to use `syncfs()`
to avoid flushing filesystems unrelated to what they want to sync.  In
the case of OSTree, this does matter - for example you might have a
network mount point backing your database, and we don't want to block
upgrades on syncing it.

This change is safe because we're doing syncfs in *addition* to the
previous global `sync()` (a revision from an earlier patch).

Now because OSTree only touches the `/` mount point which covers the
repository, the deployment roots (including their copy of `/etc`), as
well as `/boot`, we should at some point later be able to drop the
`sync()` call.  Note that on initial system installs we do relabel
`/var` but that shouldn't happen at ostree time - any new directories
are taken care of via `systemd-tmpfiles` on boot.

10 years agostatus: Don't crash if we deployed a local refspec
Colin Walters [Tue, 21 Apr 2015 01:02:25 +0000 (21:02 -0400)]
status: Don't crash if we deployed a local refspec

In the case we built a local tree, we'd pass `NULL` as a remote down
to the GPG checking code.  Noticed this in the test suite.

10 years agosysroot: Close sysroot fd in finalize
Colin Walters [Sun, 19 Apr 2015 19:25:05 +0000 (15:25 -0400)]
sysroot: Close sysroot fd in finalize

Just noticed this while I was going to add another one there.

10 years agolibglnx: Update from master
Colin Walters [Fri, 17 Apr 2015 20:15:55 +0000 (16:15 -0400)]
libglnx: Update from master

No real changes, but I'd like to use some of the new APIs later.

10 years agoRelease 2015.6
Colin Walters [Fri, 17 Apr 2015 18:16:08 +0000 (14:16 -0400)]
Release 2015.6

10 years agosysroot: Add ostree_sysroot_get_fd()
Colin Walters [Fri, 17 Apr 2015 13:13:31 +0000 (09:13 -0400)]
sysroot: Add ostree_sysroot_get_fd()

This way external programs like rpm-ostree can do fd-relative
operations on the deployment directories, like inspecting the RPM
database.

Closes: https://github.com/GNOME/ostree/pull/91
10 years agomain: Tweak GPG output to match rpm-ostree
Matthew Barnes [Fri, 17 Apr 2015 16:43:46 +0000 (12:43 -0400)]
main: Tweak GPG output to match rpm-ostree

10 years agosysroot: Cache an OstreeRepo instance
Matthew Barnes [Fri, 17 Apr 2015 13:00:17 +0000 (09:00 -0400)]
sysroot: Cache an OstreeRepo instance

Rather than returning a new OstreeRepo instance in each call to
ostree_sysroot_get_repo(), cache one internally so the same instance
is returned each time.

10 years agoadmin: Conditionally show GPG signatures in status command
Matthew Barnes [Wed, 15 Apr 2015 19:04:53 +0000 (15:04 -0400)]
admin: Conditionally show GPG signatures in status command

Only if GPG verification is enabled for a deployment's origin.

10 years agorepo: Add ostree_repo_remote_get_gpg_verify()
Matthew Barnes [Wed, 15 Apr 2015 18:14:55 +0000 (14:14 -0400)]
repo: Add ostree_repo_remote_get_gpg_verify()

Trivial function, but it does at least centralize the default value.

10 years agopull: Print GPG signature status as soon as its known
Matthew Barnes [Tue, 14 Apr 2015 00:26:21 +0000 (20:26 -0400)]
pull: Print GPG signature status as soon as its known

10 years agorepo: Add a "gpg-verify-result" signal
Matthew Barnes [Mon, 13 Apr 2015 17:21:17 +0000 (13:21 -0400)]
repo: Add a "gpg-verify-result" signal

Emitted during a pull operation upon GPG verification (if enabled).
Applications can connect to this signal to output the verification
results if desired.

10 years agorepo: Improve error handling in sign_data()
Matthew Barnes [Wed, 8 Apr 2015 18:50:55 +0000 (14:50 -0400)]
repo: Improve error handling in sign_data()

Use _ostree_gpg_error_to_gio_error() so the actual GPG error message is
included in the GError.  Then apply an "Unable to blah: " message prefix.

10 years agoreset: Don't enforce parent commits
Colin Walters [Wed, 8 Apr 2015 00:54:37 +0000 (20:54 -0400)]
reset: Don't enforce parent commits

First, git doesn't do this, and whatever Linus thinks is right or
something.

Second specifically to OSTree, it's quite common to not have
intermediate commits.  If one wants to reset a ref in order to prune
data after a deployment, the parentage check will fail.

Closes: https://github.com/GNOME/ostree/pull/87
10 years agolibglnx: Update to latest
Colin Walters [Tue, 14 Apr 2015 19:53:51 +0000 (15:53 -0400)]
libglnx: Update to latest

This pulls in more fixes for writes.

10 years agoconfig: add new parameter "commit-update-summary" to core section
Giuseppe Scrivano [Thu, 2 Apr 2015 10:33:07 +0000 (12:33 +0200)]
config: add new parameter "commit-update-summary" to core section

When set to true, the summary file is automatically updated after
a commit.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
10 years agosummary: write the contents to a temporary file
Giuseppe Scrivano [Thu, 2 Apr 2015 09:58:16 +0000 (11:58 +0200)]
summary: write the contents to a temporary file

do not write directly to the summary file but use a temporary file
first.  It avoids to create an empty file if "ot_util_variant_save"
fails.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
10 years ago_ostree_repo_file_replace_contents: make buf const
Giuseppe Scrivano [Tue, 14 Apr 2015 07:56:13 +0000 (09:56 +0200)]
_ostree_repo_file_replace_contents: make buf const

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
10 years agotests: Fix root uid check in test-commit-sign.sh
Matthew Barnes [Tue, 14 Apr 2015 12:53:48 +0000 (08:53 -0400)]
tests: Fix root uid check in test-commit-sign.sh

10 years agolibglnx: Pick up file permission regression fix
Matthew Barnes [Tue, 14 Apr 2015 12:49:18 +0000 (08:49 -0400)]
libglnx: Pick up file permission regression fix

https://bugzilla.gnome.org/747813

10 years agorepo: Add a private helper to replace a file, honoring fsync policy
Colin Walters [Mon, 13 Apr 2015 17:28:02 +0000 (13:28 -0400)]
repo: Add a private helper to replace a file, honoring fsync policy

Extracted from discussion in https://github.com/GNOME/ostree/pull/83

10 years agorefs: Use *at for writes, honor repo fsync flag
Colin Walters [Thu, 9 Apr 2015 01:54:28 +0000 (21:54 -0400)]
refs: Use *at for writes, honor repo fsync flag

I was looking at https://bugzilla.gnome.org/show_bug.cgi?id=738954
which wants us to ensure we chown() the refs.  As part of that,
I did a generic conversion to use `*at()` (which naturally gives
us more low level control so we can call `fchown` etc.

This patch also sneaks in a change to respect the repo's
`disable_fsync` flag - if fsync is not set, then we never
`fdatasync()` (unlike the `g_file_replace_contents()` default.  Also
unlike it, if fsync is enabled, we *always* sync even if the file
didn't exist.

10 years agoostree_repo_checkout_tree_at: remove @subpath documentation
Giuseppe Scrivano [Mon, 13 Apr 2015 09:37:18 +0000 (11:37 +0200)]
ostree_repo_checkout_tree_at: remove @subpath documentation

It is not an argument of the function.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
10 years agoAdd an API to set/unset a deployment tree's mutability
Colin Walters [Thu, 12 Feb 2015 14:13:30 +0000 (09:13 -0500)]
Add an API to set/unset a deployment tree's mutability

This will be used by rpm-ostree to unset the immutable bit temporarily
in order to do package layering.  We could add an API to deploy a tree
without the immutable bit, but this is simpler.

10 years agopull-metalink: Don't print error output when we expect failure
Colin Walters [Thu, 9 Apr 2015 13:14:52 +0000 (09:14 -0400)]
pull-metalink: Don't print error output when we expect failure

I think I added `cat err.txt` to debug, but it's not necessary now.

11 years agoadmin: Show GPG signatures in status command
Matthew Barnes [Tue, 31 Mar 2015 23:52:19 +0000 (19:52 -0400)]
admin: Show GPG signatures in status command

11 years agogpg: Add ostree_gpg_verify_result_describe()
Matthew Barnes [Fri, 20 Mar 2015 16:07:03 +0000 (12:07 -0400)]
gpg: Add ostree_gpg_verify_result_describe()

Internalizes the signature output of "ostree show" so it can be reused
elsewhere.

11 years agoRelease 2015.5
Colin Walters [Tue, 7 Apr 2015 20:18:45 +0000 (16:18 -0400)]
Release 2015.5

11 years agoostree_repo_checkout_tree_at: New API for checkouts
Colin Walters [Mon, 6 Apr 2015 22:29:01 +0000 (18:29 -0400)]
ostree_repo_checkout_tree_at: New API for checkouts

rpm-ostree currently uses ostree_repo_checkout_tree(), which as a side
effect will use the uncompressed objects cache by default.  This is
rather annoying if you're using rpm-ostree on a server-side
repository, because if you then rsync the repo, you'll be syncing out
the uncompressed objects unless you exclude them.

We added the ability to disable the uncompressed cache in the
repository config to fix this, but it's better to allow application
control over this.  The uncompressed cache will in some future version
become opt in as well.

This new API further:
 - Drops the `GFile` usage in favor of `openat` APIs
 - Improves ergonomics by avoiding callers having to query the source
   `GFileInfo` (and carry around a copy of `OSTREE_GIO_FAST_QUERYINFO`)
 - Has a more extensible options structure

Per the comment, I rather crudely have the `ostree checkout` builtin
call both APIs to ensure some testing coverage.

However, I'd like to in the future have easier-to-set-up testing code
that calls `libtest.sh` to set up dummy data.

11 years agopull: Handle remote web server not honoring range requests
Colin Walters [Sat, 4 Apr 2015 14:49:28 +0000 (10:49 -0400)]
pull: Handle remote web server not honoring range requests

It's valid for the remote server to say 200 OK and give us the entire
file instead of a 206 Partial Content, and in that case we should blow
away the previous cached data, rather than blindly appending to it and
thus creating multiple copies of the data inside the file.

This problem primarily occurs when we do have the complete file, and
we're interrupted, then try again, where the new process didn't record
the download was already complete.  We do a range request for bytes
past the end, and some web servers (e.g. Akamai) will return 200 OK
with the whole content again, rather than a 416 Requested Range Not
Satisfiable.

Thus we could also fix this by saner caching strategy - since we know
the file is complete, rename it again to $checksum.done or something
before it's processed.  (Or really, rework how we do caching more
intelligently in general).

This fixes the issue that interrupted pulls failed with such
webservers, although repeated attempts would eventually succeed
because we'd unlink files that failed to pull.

Related: https://bugzilla.redhat.com/show_bug.cgi?id=1207292

11 years agotests: Verify that the pull error was from interruption
Colin Walters [Mon, 6 Apr 2015 15:10:56 +0000 (11:10 -0400)]
tests: Verify that the pull error was from interruption

While working on https://github.com/GNOME/ostree/pull/84 I wanted to
verify that nothing else was going wrong.

11 years agocore: Actually allow none in ostree_parse_refspec()
Matthew Barnes [Mon, 6 Apr 2015 16:08:27 +0000 (12:08 -0400)]
core: Actually allow none in ostree_parse_refspec()

Both 'out_remote' and 'out_ref' parameters already have the (allow-none)
annotation but that wasn't actually true.

11 years agotests: Missing linker flags for test-rollsum
Daniel Svensson [Mon, 6 Apr 2015 14:25:03 +0000 (10:25 -0400)]
tests: Missing linker flags for test-rollsum

Reproducable on Debian; Fedora lets it slide.

11 years agodist-packaging: Don't delete 91-ostree.preset, do clean old rpms/sources
Colin Walters [Sun, 5 Apr 2015 13:18:42 +0000 (09:18 -0400)]
dist-packaging: Don't delete 91-ostree.preset, do clean old rpms/sources

We have to copy the sources to avoid rpmbuild deleting them.  But on
the other hand there's no reason for old sources to stick around.

11 years agotests: skip test-commit-sign.sh when not root
Giuseppe Scrivano [Thu, 2 Apr 2015 12:21:52 +0000 (14:21 +0200)]
tests: skip test-commit-sign.sh when not root

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agobuild: exclude .sig files from syntax-check
Giuseppe Scrivano [Thu, 2 Apr 2015 12:21:29 +0000 (14:21 +0200)]
build: exclude .sig files from syntax-check

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agosrc/ostree/ot-main.c: drop empty newline at end of file
Giuseppe Scrivano [Thu, 2 Apr 2015 12:16:57 +0000 (14:16 +0200)]
src/ostree/ot-main.c: drop empty newline at end of file

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agotests/basic-test.sh: enable repo-noperm test only for non-root user
Giuseppe Scrivano [Thu, 2 Apr 2015 12:09:33 +0000 (14:09 +0200)]
tests/basic-test.sh: enable repo-noperm test only for non-root user

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agobuild: Drop libattr from the spec file
Giuseppe Scrivano [Thu, 2 Apr 2015 08:16:31 +0000 (10:16 +0200)]
build: Drop libattr from the spec file

commit 534c4c20c3fa5ad9500ea96093a3ece7821a6056 already drops its
usage in the code.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agobuild: Use glibc's xattr support instead of requiring libattr
Daniel Svensson [Wed, 1 Apr 2015 07:45:20 +0000 (09:45 +0200)]
build: Use glibc's xattr support instead of requiring libattr

Fixes the build on Debian, and is one library less.

Closes: #78
11 years agomain: Only verify SUPERUSER flag if using default sysroot
Colin Walters [Wed, 1 Apr 2015 10:21:34 +0000 (06:21 -0400)]
main: Only verify SUPERUSER flag if using default sysroot

The use case for non-default sysroots that I know of are:
 1) The current test suite
 2) Installers (Anaconda)
 3) Inspecting VM disks

For 2) and 3), it'll quickly be obvious if they're not running as
root, and these are more obscure cases.  We want to allow 1), and this
is a simple way to do it.

https://bugzilla.gnome.org/show_bug.cgi?id=747164

11 years agoInclude ostree-gpg-verify-result.h in ostree.h
Matthew Barnes [Tue, 31 Mar 2015 23:48:55 +0000 (19:48 -0400)]
Include ostree-gpg-verify-result.h in ostree.h

11 years agocore: Fix possible crash in ostree_mutable_tree_walk()
Sam Thursfield [Tue, 31 Mar 2015 16:59:43 +0000 (12:59 -0400)]
core: Fix possible crash in ostree_mutable_tree_walk()

If the starting index is beyond the end of the list, it's a programming
error. Previously, the code was trying to raise a runtime error, but
actually causing a segfault.

This was detected by test code in test-mutable-tree.c, which is removed
in this commit because it should now not be possible to crash here.

https://bugzilla.gnome.org/747032

11 years agobsdiff: change submodule location
Giuseppe Scrivano [Thu, 26 Mar 2015 22:31:25 +0000 (23:31 +0100)]
bsdiff: change submodule location

The cleanup code was merged in the https://github.com/mendsley/bsdiff
repository, so just use it.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
11 years agoAdd OSTREE_ADMIN_BUILTIN_FLAG_SUPERUSER
Matthew Barnes [Sun, 22 Feb 2015 21:06:39 +0000 (16:06 -0500)]
Add OSTREE_ADMIN_BUILTIN_FLAG_SUPERUSER

Indicates the command requires superuser privilege.  Fails early with
a more helpful message than would otherwise be returned by libostree.

Currently all admin commands except 'status' require superuser.

11 years agoAdd OstreeAdminBuiltinFlags for admin commands
Matthew Barnes [Sun, 22 Feb 2015 20:41:02 +0000 (15:41 -0500)]
Add OstreeAdminBuiltinFlags for admin commands

Only OSTREE_ADMIN_BUILTIN_FLAG_NONE so far; does nothing.

11 years agotests: Add a test case for unwritable repos
Matthew Barnes [Wed, 4 Feb 2015 02:44:38 +0000 (21:44 -0500)]
tests: Add a test case for unwritable repos

11 years agoCheck repo permission prior to attempting to modify it
Matthew Barnes [Fri, 16 Jan 2015 18:28:36 +0000 (13:28 -0500)]
Check repo permission prior to attempting to modify it

Fail early with a helpful message if the user does not have sufficient
permission to modify an OSTree repository.

11 years agoAdd ostree_ensure_repo_writable()
Matthew Barnes [Fri, 16 Jan 2015 15:04:18 +0000 (10:04 -0500)]
Add ostree_ensure_repo_writable()

Commands that need to write files within the repo directory can call
this early to ensure the directory is writable for the current user.
If not, it fails with a helpful "You need to be root to perform this
command" message.

11 years agoAdd ostree_repo_is_writable()
Matthew Barnes [Mon, 19 Jan 2015 01:27:53 +0000 (20:27 -0500)]
Add ostree_repo_is_writable()

11 years agoRelease 2015.4
Colin Walters [Wed, 25 Mar 2015 16:50:50 +0000 (12:50 -0400)]
Release 2015.4

11 years agogpg-sign: Add missing NULL terminator in options
Colin Walters [Tue, 24 Mar 2015 13:57:27 +0000 (09:57 -0400)]
gpg-sign: Add missing NULL terminator in options

11 years agoFix build with !HAVE_LIBSOUP
Alexander Larsson [Mon, 23 Mar 2015 13:17:52 +0000 (14:17 +0100)]
Fix build with !HAVE_LIBSOUP

Fix up ostree_repo_pull to match the new declaration

11 years agogpg-sign: Update man page for --delete option
Matthew Barnes [Fri, 20 Mar 2015 16:57:20 +0000 (12:57 -0400)]
gpg-sign: Update man page for --delete option

11 years agolibglnx: Update to latest
Colin Walters [Fri, 20 Mar 2015 14:56:45 +0000 (10:56 -0400)]
libglnx: Update to latest

Just on general principle.  Newer is better.

11 years agobuild: ostree-gpg-verify-result.h is a public header, install it
Colin Walters [Fri, 20 Mar 2015 14:55:56 +0000 (10:55 -0400)]
build: ostree-gpg-verify-result.h is a public header, install it

11 years agoFix build failure on g_autoptr(gchar) with glib master
Alexander Larsson [Fri, 20 Mar 2015 14:36:56 +0000 (15:36 +0100)]
Fix build failure on g_autoptr(gchar) with glib master

This was removed in favour of g_autofree

11 years agogpg: Regenerate test data for test-gpg-verify-result
Matthew Barnes [Thu, 19 Mar 2015 16:43:04 +0000 (12:43 -0400)]
gpg: Regenerate test data for test-gpg-verify-result

Turns out the expired signature case was failing because the signature
itself was corrupted.  Reconstructed the test data and updated the test
code.  Note, an expired signature is still counted as valid.

Also, handy debugging trick for setting a key or signature expiry: the
CLI makes it appear the shortest expiry is 1 day, but it also secretly
recognizes "seconds=N".

11 years agogpg: Link to GPGME bug about GPGME_SIGSUM_KEY_REVOKED
Matthew Barnes [Thu, 19 Mar 2015 14:21:08 +0000 (10:21 -0400)]
gpg: Link to GPGME bug about GPGME_SIGSUM_KEY_REVOKED

11 years agotests: Update test-gpg-signed-commit.sh
Matthew Barnes [Tue, 17 Mar 2015 15:22:27 +0000 (11:22 -0400)]
tests: Update test-gpg-signed-commit.sh

Utilize and test new CLI capabilities:

  - Signature count in 'ostree show' result
  - Duplicate signatures now rejected
  - Ability to delete signatures

11 years agoshow: Print a blurb for each signature on a commit
Matthew Barnes [Sun, 15 Mar 2015 19:41:03 +0000 (15:41 -0400)]
show: Print a blurb for each signature on a commit

Roughly mimics the output of "gpg --verify".

11 years agogpg-sign: Add a --delete option to delete signatures
Matthew Barnes [Thu, 12 Mar 2015 23:01:44 +0000 (19:01 -0400)]
gpg-sign: Add a --delete option to delete signatures

11 years agorepo: Reject duplicate signatures when signing commit
Matthew Barnes [Thu, 12 Mar 2015 23:00:51 +0000 (19:00 -0400)]
repo: Reject duplicate signatures when signing commit

Uses OstreeGpgVerifyResult to catch duplicate signatures.

If the commit has already been signed with the given GPG key ID, fail
with a G_IO_ERROR_EXISTS error code.

11 years agorepo: Add ostree_repo_verify_commit_ext()
Matthew Barnes [Wed, 11 Mar 2015 23:21:33 +0000 (19:21 -0400)]
repo: Add ostree_repo_verify_commit_ext()

Similar to ostree_repo_verify_commit(), but returns more verification
details by way of an OstreeGpgVerifyResult object instead of a boolean.

11 years agogpg: Add OstreeGpgVerifyResult
Matthew Barnes [Wed, 4 Mar 2015 17:44:47 +0000 (12:44 -0500)]
gpg: Add OstreeGpgVerifyResult

Wrappers a referenced gpgme_verify_result_t so detailed verify results
can be examined independently of executing a verify operation.

_ostree_gpg_verifier_check_signature() now returns this object instead
of a single valid/invalid boolean, but the idea is for OstreeRepo to also
return this object for commit signature verification so it can be utilized
at the CLI layer (and possibly by other programs).

11 years agofsck: Fix object count output
Dan Nicholson [Tue, 17 Mar 2015 19:20:53 +0000 (12:20 -0700)]
fsck: Fix object count output

The object count comes from g_hash_table_size(), so it's not a 0 based
index. In order to maintain the mod calculations correctly, just print
out index + 1.

https://bugzilla.gnome.org/show_bug.cgi?id=746360

11 years agoOstreeGpgVerifier: Take the signed data as a GBytes
Matthew Barnes [Mon, 16 Mar 2015 17:01:55 +0000 (13:01 -0400)]
OstreeGpgVerifier: Take the signed data as a GBytes

Similar to c2b01ad.  For some reason I was thinking the commit data
still needed to be written to disk prior to verifying, but it's just
another artifact of spawning gpgv2 (predates using GPGME).

Makes for a nice cleanup in fetch_metadata_to_verify_delta_superblock()
as well.